﻿#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define _CRT_SECURE_NO_WARNINGS

//声明函数
void add_data(void);//添加数据在函数
//void updata_date();
//void search_date();
//void delete_date();
//void show_date();

//声明结构体
struct student {
	int n;
	char name[20];
	float score;
};


FILE* fp;
int main() {
	int select;
	char select_c;
	//打开或创建stu.dat文件。如果文件存在，打开不清空，
	//文件不存在就创建文件

	//rb+:文件存在，才能打开，不存在返回null。
	//wb+:文件存在，会清空，不存在，会创建。
	if ((fp = fopen("stu.dat", "rb+")) == NULL)//文件不存在
	{
		if ((fp = fopen("stu.dat", "wb+"))==NULL)//wb+打开失败
		{
			printf("打开stu.dat失败");
			system("PAUSE");//等待，防止黑屏瞬间关闭
			exit(1);//退出
		}
	}
	do {
		printf("请选择：\n");
		printf("1.增加数据，2.更新数据，3.查询数据,4.删除数据，5.显示所有数据，6.退出\n");
		printf("请输入您要进行的操作(1-6)：");
		scanf("%d", &select);
		//检测用户输入的是不是1-6;
		while (select < 1 || select>6) {
			printf("输入有误请重新输入您要进行的操作(1-6)：");
			scanf("%c", &select_c);
			select = select_c-48;


		}
		//根据用户输入执行对应的函数
		switch (select) {
			case 1:
				//调用添加数据的函数
				add_data();
				break;
			case 2:
				//调用更新数据的函数
				//updata_date();
				break;
			case 3:
				//调用查询数据的函数
				//search_date();
				break;
			case 4:
				//调用删除数据的函数
				//delete_date();
				break;
			case 5:
				//调用显示所有数据的函数
				// show_date();
				break;

		}
	} while (select!=6);
	fclose(fp);
	system("PAUSE");//等待，防止黑屏瞬间关闭

	return 0;
}


/*
函数名：add_data
函数功能：添加数据
输入：无
输出：无
*/
void add_data(void) {
	//创建一个student结构体
	struct student stu;
	//输入这个结构体 数据
	printf("请输入要添加的学生学号：");
	scanf("%d", &stu.n);
	printf("请输入要添加的学生姓名：");
	scanf("%s", stu.name);
	printf("请输入要添加的学生成绩：");
	scanf("%f", &stu.score);
	//将这个结构体写入到数据文件中
	//将文件指针（光标）移动到文件末尾
	//fseek(文件指针，偏移量，起始位置)
	fseek(fp,0,SEEK_END);
	//将结构体写入到数据文件中
	fwrite(&stu, sizeof(struct student), 1, fp);
	printf("添加成功\n");
}